# -*- coding: utf-8 -*-
'''
Created on May 18th, 2011

@author: manux
'''

from dao.DaoChemin import DaoChemin

class DaoDamier():
    '''
    classdocs
    '''
    
    def __init__(self, nom):
        '''
        Constructor
        '''
        self.nom = nom
        self._chemin = DaoChemin().cheminVersDao
        self.height = 0
        self.width = 0
        self.terrainType = {}
        self._parametresCases()
        #self._imprimeTerrainType()
    
    def _parametresCases(self):
        if (self.nom == "niveau1"):
            fileChoice = "DataDamierSpring"
        if (self.nom == "niveau2"):
            fileChoice = "DataDamierWinter"
        
        values = self._lectureFichier(fileChoice)
        
        self.width = int(values[0][:-1])
        self.height = int(values[1][:-1])
        fieldCodes = values[2].split(',') #['4','4','4','4','4','2','2','2']
        self._remplitCases(fieldCodes)
        
    def _remplitCases(self, fCodes):
        fieldTypes = self._lectureFichier('DataTypeTerrain')
        
        idx = 0 # index qui va parcourir les éléments de fieldCodes
        for l in range(self.width):
            for c in range(self.height):
                '''
                ...et met tout dans le dictionnaire
                '''
                self.terrainType[chr(65+l) + str(c+1)] = fieldTypes[int(fCodes[idx])]
                idx += 1
    
    def _lectureFichier(self, nomFichier):
        chemin = self._chemin
        chemin = str(chemin) + nomFichier
        try:
            fr = open(chemin, 'r')
            elts = fr.readlines()
            fr.close()
        except IOError:
            print "Impossible d'ouvrir %s" % nomFichier
        return elts
    
    '''
    Méthode privée qui permet d'afficher le dictionnaire terrainType
    dans un fichier TTFile pour le cas où il faudrait vérifier l'intégrité des données
    '''
    def _imprimeTerrainType(self):
        fw = open('TTFile', 'w')
        clefs = self.terrainType.keys()
        clefs.sort()
        for x in clefs:
            s = str(x) + " : " + str(self.terrainType[x]) + "\n"
            fw.write(s)
        fw.close()
